package com.sale.system.service;

import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.system.domain.SysMaterialCoding;
import com.sale.system.domain.dto.MaterialRawDto;
import com.sale.system.domain.dto.ProjectRecursionDto;
import com.sale.system.domain.vo.MaterialRawVo;

import java.util.List;

/**
 * @Description
 * @Param
 * @Date
 * @Author hl
 **/
public interface IMaterialRawService {

    /**
     * 分页查询原料信息
     *
     * @param materialRaw 原料信息,pageQuery 分页参数
     * @return  TableDataInfo<MaterialRaw>
     */
    TableDataInfo<MaterialRawDto> selectRawList(MaterialRawVo materialRaw, PageQuery pageQuery);

    /**
     * 新增原料信息
     *
     * @param materialRaw 原料信息
     * @return int
     */
    int insertRaw(MaterialRawVo materialRaw) throws Exception;

    /**
     * 删除原料信息
     *
     * @param materialId 原料id
     * @return int
     */
    int deleteRawById(String materialId) throws Exception;

    /**
     * 查询单个原料信息
     *
     * @param materialId 原料信息
     * @return MaterialRaw
     */
    MaterialRawDto selectRawById(long materialId);

    /**
     * 修改原料信息
     *
     * @param materialRaw 原料信息
     * @return int
     */
    int updateRawEdit(MaterialRawVo materialRaw) throws Exception;

    /**
     * 树结构
     *
     * @param
     * @return List<ProjectRecursionDto>
     */
    List<ProjectRecursionDto> selectChildrenRawThe();

    /**
     * 根据物料编码获取原料详情
     * @param materialCode
     * @return
     */
    MaterialRawDto getByMaterialCode(String materialCode);

    /**
     * 根据原料类别查询类别名称
     */
    SysMaterialCoding selectCodingRulesById(String codingId);

    /**
     * 冻结
     */
    int updateEditFreeze(Long materialId);

    /**
     * 原料解冻
     */
    int updateEditThaw(Long materialId);
}
